<html>
<head><meta charset="utf-8"><title>brainstorming: mission statement, goals, design constraints · t-compiler/wg-incr-comp · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/index.html">t-compiler/wg-incr-comp</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html">brainstorming: mission statement, goals, design constraints</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="201984120"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984120" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984120">(Jun 25 2020 at 15:26)</a>:</h4>
<p>this is a brainstorming thread</p>



<a name="201984211"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984211" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984211">(Jun 25 2020 at 15:27)</a>:</h4>
<p>so I don't know if this is going to end up being an area subteam or a project subteam</p>



<a name="201984240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984240">(Jun 25 2020 at 15:27)</a>:</h4>
<p>it sort of depends on whether we turn into a group of local experts on everything related to incr-comp</p>



<a name="201984269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984269">(Jun 25 2020 at 15:27)</a>:</h4>
<p>or if we just decide on a specific set of tasks that we're going to do, and once they're done, we disband</p>



<a name="201984428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984428">(Jun 25 2020 at 15:29)</a>:</h4>
<p>in any case, here are some thoughts that have been bouncing around my head for some number of days</p>



<a name="201984461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984461">(Jun 25 2020 at 15:29)</a>:</h4>
<p>some of these are things I've already talked about with <span class="user-mention" data-user-id="116009">@nikomatsakis</span> but want to record more publicly</p>



<a name="201984474"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984474" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984474">(Jun 25 2020 at 15:29)</a>:</h4>
<p>(I don't have much of an opinion regarding these questions, I'm primarily interested in showing up at a meeting each week (or w/e), being given some tasks to do, and gaining expertise in incr-comp through that - whatever everyone else's goals are, that works for me)</p>



<a name="201984489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984489">(Jun 25 2020 at 15:29)</a>:</h4>
<p>others are more little musings that I'm still working through</p>



<a name="201984596"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984596" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984596">(Jun 25 2020 at 15:30)</a>:</h4>
<p><span class="user-mention" data-user-id="116107">@davidtwco</span> that's no problem. I just figure this can be a space for people to write down their thoughts. Or respond to mine. Or maybe it will just be a void that I send messages off into.</p>



<a name="201984659"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984659" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984659">(Jun 25 2020 at 15:30)</a>:</h4>
<p>The first thing I want to bring up: I recently mentioned to niko how we might be better served in incremental compilation</p>



<a name="201984691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984691">(Jun 25 2020 at 15:30)</a>:</h4>
<p>if we used some sort of "predictive model" to anticipate which modules/fn's are most likely to be editted in the future</p>



<a name="201984706"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984706" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984706">(Jun 25 2020 at 15:31)</a>:</h4>
<p>and keep those in a separate cgu</p>



<a name="201984723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984723">(Jun 25 2020 at 15:31)</a>:</h4>
<p>from the unchanging code</p>



<a name="201984771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984771">(Jun 25 2020 at 15:31)</a>:</h4>
<p>obviously we cannot predict the future, but I would guess that the modules in files that have been most recently edited are ones likely to change in the future</p>



<a name="201984881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984881">(Jun 25 2020 at 15:32)</a>:</h4>
<p>when I mentioned this to <span class="user-mention" data-user-id="116009">@nikomatsakis</span> , they responded that one of the oldest design crietria for incr-comp is that it is deterministic</p>



<a name="201984928"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201984928" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201984928">(Jun 25 2020 at 15:32)</a>:</h4>
<p>i.e. the edit history should not matter for the final object code files you get out</p>



<a name="201985090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985090">(Jun 25 2020 at 15:34)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> specifically pointed out that the incr-comp system, at least originally, had testing where they went through the commit history for a set of projects and checked that incr rebuilds after each commit had same object output as building from scratch at that commit</p>



<a name="201985240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985240">(Jun 25 2020 at 15:35)</a>:</h4>
<p>So all of this is to say: Do we think this is a property we should ensure we preserve? Or should we consider, e.g., having a opt-in flag where a user can say "go ahead and make cgu partitioning decisions that depend on details such as file timestamps"?</p>



<a name="201985337"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985337" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985337">(Jun 25 2020 at 15:35)</a>:</h4>
<p>That's sort of a big picture question, and I imagine a change to that design criteria would have to be approved by rest of rustc team</p>



<a name="201985343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985343">(Jun 25 2020 at 15:35)</a>:</h4>
<p>Was the goal for reproducible builds or something else?</p>



<a name="201985356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985356">(Jun 25 2020 at 15:36)</a>:</h4>
<p>It sounds a bit like that would make reproducing incr. comp. bugs even harder than it already is</p>



<a name="201985425"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985425" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985425">(Jun 25 2020 at 15:36)</a>:</h4>
<p>I think it was for reproducible builds, yes, exactly</p>



<a name="201985462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985462">(Jun 25 2020 at 15:36)</a>:</h4>
<p>and I had a reaction of "I think that ship has sailed"</p>



<a name="201985485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985485">(Jun 25 2020 at 15:36)</a>:</h4>
<p>(which is when <span class="user-mention silent" data-user-id="116009">nikomatsakis</span> gave the example of the commit history test)</p>



<a name="201985546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985546">(Jun 25 2020 at 15:37)</a>:</h4>
<p>I don't remember offhand if there were other motivations besides reproducibility of builds, and also bugs (which may or may not be a corollary)</p>



<a name="201985661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985661">(Jun 25 2020 at 15:37)</a>:</h4>
<p>anyway any work we did here would definitely have to show huge benefits before it could get buy-in, I imagine</p>



<a name="201985791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985791">(Jun 25 2020 at 15:38)</a>:</h4>
<p>but given how much time of compiling e.g. <code>rustc_middle</code> is spent in LLVM codegen</p>



<a name="201985844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985844">(Jun 25 2020 at 15:38)</a>:</h4>
<p>its something that I keep thinking about</p>



<a name="201985861"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985861" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985861">(Jun 25 2020 at 15:38)</a>:</h4>
<p>It seems like most of the use cases that care about reproducible builds are batch compilation sessions anyway. But yeah, I agree that would probably make repro-ing incr. comp bugs more difficult.</p>



<a name="201985873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985873">(Jun 25 2020 at 15:38)</a>:</h4>
<p>While reproducible builds are great, and we should want them, I think it would be reasonable for debug builds where you're just working locally to forgo that.</p>



<a name="201985892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985892">(Jun 25 2020 at 15:38)</a>:</h4>
<p>having said that, there may be other ways to get similar benefits</p>



<a name="201985919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985919">(Jun 25 2020 at 15:38)</a>:</h4>
<p>in particular, something <em>else</em> I was thinking about</p>



<a name="201985972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201985972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201985972">(Jun 25 2020 at 15:39)</a>:</h4>
<p>(by the way, I may make statements here that are bogus. please do correct me if so)</p>



<a name="201986070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986070">(Jun 25 2020 at 15:39)</a>:</h4>
<p>the other thing I was thinking about: Right now, if i understand correctly, we have a cgu parititioning system where we have a hard limit on the number of cgu's</p>



<a name="201986152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986152">(Jun 25 2020 at 15:40)</a>:</h4>
<p>we start with a large set of cgui's and merge them in order to stay under that bound, call it <em>N</em></p>



<a name="201986364"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986364" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986364">(Jun 25 2020 at 15:41)</a>:</h4>
<p>and that is set by profiles in cargo</p>



<a name="201986452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986452">(Jun 25 2020 at 15:42)</a>:</h4>
<p>where the default is 256 for incremental builds and 16 for non-incremental (for parallel codegen purposes)</p>



<a name="201986467"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986467" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986467">(Jun 25 2020 at 15:42)</a>:</h4>
<p>so heres my point</p>



<a name="201986481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986481">(Jun 25 2020 at 15:42)</a>:</h4>
<p>what if, instead of having a fixed number</p>



<a name="201986500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986500">(Jun 25 2020 at 15:42)</a>:</h4>
<p>we instead had it scale up with crate size</p>



<a name="201986516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986516">(Jun 25 2020 at 15:42)</a>:</h4>
<p>or, if you prefer, we had a max codegen-unit size</p>



<a name="201986528"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986528" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986528">(Jun 25 2020 at 15:42)</a>:</h4>
<p>that is, a max size for each codegen unit</p>



<a name="201986564"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986564" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986564">(Jun 25 2020 at 15:43)</a>:</h4>
<p>and so the merging would be about putting the smaller stuff together</p>



<a name="201986579"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986579" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986579">(Jun 25 2020 at 15:43)</a>:</h4>
<p>this is all a very long way of saying</p>



<a name="201986597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986597">(Jun 25 2020 at 15:43)</a>:</h4>
<p>right now, the time spent doing codegen</p>



<a name="201986626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986626">(Jun 25 2020 at 15:43)</a>:</h4>
<p>is going to be O(C) where C is the size of your crate</p>



<a name="201986647"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986647" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986647">(Jun 25 2020 at 15:43)</a>:</h4>
<p>even when you turn on incremetnal, its still O(C)</p>



<a name="201986728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986728">(Jun 25 2020 at 15:44)</a>:</h4>
<p>(its "just" cut by that constant factor)</p>



<a name="201986778"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986778" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986778">(Jun 25 2020 at 15:44)</a>:</h4>
<p>but if the policy were instead to have a max codegen-unit size</p>



<a name="201986840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986840">(Jun 25 2020 at 15:45)</a>:</h4>
<p>then time spent doing codegen should be O(E*S), where E is number of edits and S is that max codegen-unit size</p>



<a name="201986901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201986901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201986901">(Jun 25 2020 at 15:45)</a>:</h4>
<p>I think in general that's a good idea but there's a few things I ran into when I played with that idea:</p>
<ul>
<li>
<p>For release cases, you really don't want to split call graphs over multiple CGUs because it kills LLVM's optimization abilities (ThinLTO I think recovers some of those losses but I don't know much about it).</p>
</li>
<li>
<p>For debug cases, right now you sometimes get lucky and the code you're modifying is in a tiny CGU. By making the CGUs more equal in size, you're going to hurt those cases (but hopefully still improve the average case).</p>
</li>
</ul>



<a name="201987027"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987027" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987027">(Jun 25 2020 at 15:46)</a>:</h4>
<p>I agree you don't want to split call graphs if you can. That could hopefully be addressed by making the merge algorithm smarter</p>



<a name="201987083"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987083" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987083">(Jun 25 2020 at 15:46)</a>:</h4>
<p>the "get lucky and have thing in tiny CGU" case ... does that actually happen today?</p>



<a name="201987106"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987106" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987106">(Jun 25 2020 at 15:46)</a>:</h4>
<p>Yeah</p>



<a name="201987117"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987117" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987117">(Jun 25 2020 at 15:46)</a>:</h4>
<p>I was under impression that, since the cgu merge system is geared towards load balancing</p>



<a name="201987144"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987144" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987144">(Jun 25 2020 at 15:47)</a>:</h4>
<p>that you would tend to have small stuff all collected together</p>



<a name="201987149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987149">(Jun 25 2020 at 15:47)</a>:</h4>
<p>If your function is not polymorphic, it tends to end up in one of the smaller CGUs</p>



<a name="201987154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987154">(Jun 25 2020 at 15:47)</a>:</h4>
<p>hmm</p>



<a name="201987156"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987156" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987156">(Jun 25 2020 at 15:47)</a>:</h4>
<p>Not always</p>



<a name="201987171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987171">(Jun 25 2020 at 15:47)</a>:</h4>
<p>but often I'd say</p>



<a name="201987178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987178">(Jun 25 2020 at 15:47)</a>:</h4>
<p>that's interesting</p>



<a name="201987209"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987209" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987209">(Jun 25 2020 at 15:47)</a>:</h4>
<p>if anything, its an argument for the predictive modelling I mentioned up above</p>



<a name="201987297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987297">(Jun 25 2020 at 15:48)</a>:</h4>
<p>the other thing I was thinking, regarding max codegen size</p>



<a name="201987299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987299">(Jun 25 2020 at 15:48)</a>:</h4>
<p>Does that fall out from generic and non-generic items being in different codegen units in the initial set and then there just being more generic code in most projects?</p>



<a name="201987326"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987326" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987326">(Jun 25 2020 at 15:48)</a>:</h4>
<p>I think so yeah</p>



<a name="201987469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987469">(Jun 25 2020 at 15:49)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/201987297">said</a>:</p>
<blockquote>
<p>the other thing I was thinking, regarding max codegen size</p>
</blockquote>
<p>... instead of having it be a predetermined number, the number could be computed by the contents of the crate. E.g. take the largest fn in the crate, multiply its size by 10 (or some other factor K), and then use that as the target cgu size.</p>



<a name="201987571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987571">(Jun 25 2020 at 15:50)</a>:</h4>
<p>I'm honestly not sure whether that will hurt or help overall, but it at least seems like it has a chance to being adaptive to peoples coding styles</p>



<a name="201987583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987583">(Jun 25 2020 at 15:50)</a>:</h4>
<p>Yeah, I think scaling the number of CGUs by the size of the crate (however that's determined) is a good idea</p>



<a name="201987627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987627">(Jun 25 2020 at 15:50)</a>:</h4>
<p>if nothing else, it has a nice asymptotic growth argument behind it.</p>



<a name="201987649"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987649" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987649">(Jun 25 2020 at 15:51)</a>:</h4>
<p>perfect for academic papers</p>



<a name="201987665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987665">(Jun 25 2020 at 15:51)</a>:</h4>
<p>There's already some code-size heuristic computed in partitioning to determine which codegen units are smallest and should be merged, right?</p>



<a name="201987715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987715">(Jun 25 2020 at 15:51)</a>:</h4>
<p>I assume that could be used to determine the size of an entire crate.</p>



<a name="201987717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987717">(Jun 25 2020 at 15:51)</a>:</h4>
<p>One project I've been thinking about doing is refactoring <code>partitioning.rs</code> so that the actual algorithm is hidden behind a trait which would let us swap out different algorithms in a cleaner way. Potentially we could have unstable flags for choosing the algorithm for testing.</p>



<a name="201987723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987723">(Jun 25 2020 at 15:51)</a>:</h4>
<p>yes. it is only an estimate</p>



<a name="201987775"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987775" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987775">(Jun 25 2020 at 15:52)</a>:</h4>
<p>That would also give us a framework for having algorithms for different build configurations.</p>



<a name="201987804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987804">(Jun 25 2020 at 15:52)</a>:</h4>
<p>(and I've seen some issues where people grumble about inaccuracies in the estimate)</p>



<a name="201987945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/201987945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#201987945">(Jun 25 2020 at 15:53)</a>:</h4>
<p>okay. I need to go afk for a bit. thanks for letting me bounce these ideas off of you all.</p>



<a name="202003516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202003516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202003516">(Jun 25 2020 at 18:02)</a>:</h4>
<p>Something I'd like to see as well (I think <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> was experimenting with this concept) is experimentation with large numbers of CGUs for incremental compilation</p>



<a name="202003541"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202003541" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202003541">(Jun 25 2020 at 18:02)</a>:</h4>
<p>Like, the numbers that we have today are sort of magic numbers</p>



<a name="202003575"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202003575" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202003575">(Jun 25 2020 at 18:02)</a>:</h4>
<p>(To pick the numbers and size of CGUs)</p>



<a name="202003633"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202003633" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202003633">(Jun 25 2020 at 18:03)</a>:</h4>
<p>I would like to see how small can we make the CGUs before we lose incremental compilation performance</p>



<a name="202003782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202003782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202003782">(Jun 25 2020 at 18:04)</a>:</h4>
<p>Because the smaller they are, the more the incremental compilation times should mimic the size of the edit, is that correct?</p>



<a name="202003898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202003898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202003898">(Jun 25 2020 at 18:05)</a>:</h4>
<p>And hopefully, I think, we would like incr. comp time to be related to the size of the edits, i.e. small edits should make recompilation almost trivial</p>



<a name="202085110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202085110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202085110">(Jun 26 2020 at 12:50)</a>:</h4>
<p>Just thought of another drawback of making incr. comp. nondeterministic: It would become impossible to use it to build code for benchmarking.</p>



<a name="202085181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202085181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202085181">(Jun 26 2020 at 12:50)</a>:</h4>
<p>This is something I do all day at the moment, and having to wait even longer to run benchmarks would be very unfortunate</p>



<a name="202108918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202108918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202108918">(Jun 26 2020 at 15:59)</a>:</h4>
<p><span class="user-mention silent" data-user-id="211727">Jonas Schievink</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/202085110">said</a>:</p>
<blockquote>
<p>Just thought of another drawback of making incr. comp. nondeterministic: It would become impossible to use it to build code for benchmarking.</p>
</blockquote>
<p>I don't think it would become _impossible_. It would become quite a lot harder though. We'd need a long time to run benchmarks multiple times, and do statistical analysis over the sample. </p>
<p>And there's an argument to be said that we need to do that already (measuring performance of a deterministic program is already quite hard).</p>



<a name="202110028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202110028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202110028">(Jun 26 2020 at 16:08)</a>:</h4>
<p>But if you change the program and want to estimate the performance impact of that change, non-deterministic incr. comp. wouldn't just mean you have to run it more often, it means you have to turn incr. comp. off completely, since it depends on the changes to the source code. Not even recompiling multiple times would help (since nothing has changed since the last rebuild).</p>



<a name="202110297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202110297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202110297">(Jun 26 2020 at 16:11)</a>:</h4>
<p>(you raise a good point though – this is another reason why reproducible builds are important)</p>



<a name="202112302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202112302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202112302">(Jun 26 2020 at 16:27)</a>:</h4>
<blockquote>
<p>If you change the program and want to estimate the performance impact of that change</p>
</blockquote>
<p>Ahh, I get what you mean now. I was thinking of measurements to incr. compilation times (in the context of developing the compiler), but you mean measuring performance of another Rust project that's being compiled. Yas, that's totally right. The performance impact would have to be measured against the from-scratch compiled binary, because the incr. comp. binary would depend on the compilation history, yes yes yes yes.</p>



<a name="202294046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202294046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gizmondo <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202294046">(Jun 29 2020 at 10:45)</a>:</h4>
<p>Should "querify earlier stages of compilation" be one of the goals?</p>



<a name="202346721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202346721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202346721">(Jun 29 2020 at 18:01)</a>:</h4>
<p><span class="user-mention silent" data-user-id="211727">Jonas Schievink</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/202085110">said</a>:</p>
<blockquote>
<p>Just thought of another drawback of making incr. comp. nondeterministic: It would become impossible to use it to build code for benchmarking.</p>
</blockquote>
<p>my latest thinking here is that we could get around this by providing an easy way to recreate a given incremental compilation context. E.g. a <code>-Z</code> flag where you explicitly say "treat this listed set of files as recently changed, and all others as not recently changed." That, combined with some automated messaging from the compiler <em>saying</em> what those sets are on a given compiler run, would let us recreate incremental build contexts that incorporate history without losing determinism.</p>



<a name="202347619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202347619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202347619">(Jun 29 2020 at 18:08)</a>:</h4>
<p>But that's a bit coarse-grained, isn't it? After all, incr-comp changes depending on how much and where each file was changed.</p>



<a name="202347681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202347681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202347681">(Jun 29 2020 at 18:09)</a>:</h4>
<p>Like afaik just introducing a println! call can currently affect the next incr comp step substantially</p>



<a name="202347727"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202347727" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202347727">(Jun 29 2020 at 18:09)</a>:</h4>
<p>But other changes to the same file are trivial to recompile</p>



<a name="202348067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202348067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202348067">(Jun 29 2020 at 18:12)</a>:</h4>
<p>well, <em>if</em> we can come up with some reasonable way for a human to encode the context, then one can imagine using something more fine-grained than just file timestamps</p>



<a name="202348106"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202348106" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202348106">(Jun 29 2020 at 18:12)</a>:</h4>
<p>my main point was that we need not give up on reproducibility</p>



<a name="202348208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202348208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202348208">(Jun 29 2020 at 18:13)</a>:</h4>
<p>(however, if it requires a very long string of text to encode the context informing the incremental compile, then this is perhaps not realistic.)</p>



<a name="202348484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202348484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202348484">(Jun 29 2020 at 18:15)</a>:</h4>
<p>(one thought I've just had - might be worth scheduling a meeting/session describing what the incr-comp infrastructure looks like within the compiler today; gets everyone up to speed as the working group starts to do things + you can refer back to it with new folks, or for a refresher)</p>



<a name="202348487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202348487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202348487">(Jun 29 2020 at 18:15)</a>:</h4>
<p>Yeah, I'm thinking that perhaps the minimum equivalent representation of the problem for the goal of reproducibility is a diff history, a bit like a git commit chain (caveat: I know that git doesn't actually work as patch-based diff chains, but for this purpose it can be thought of in that way)</p>



<a name="202348566"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202348566" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202348566">(Jun 29 2020 at 18:16)</a>:</h4>
<p><span class="user-mention silent" data-user-id="251406">gizmondo</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/202294046">said</a>:</p>
<blockquote>
<p>Should "querify earlier stages of compilation" be one of the goals?</p>
</blockquote>
<p>This probably should indeed be one of the goals</p>



<a name="202348980"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202348980" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202348980">(Jun 29 2020 at 18:19)</a>:</h4>
<p>I'm mainly concerned about users who want to <code>cargo bench</code> their code, and turn on incr. comp. at the same time (which would become the default once <a href="https://github.com/rust-lang/rust/issues/57968">#57968</a> is resolved). For those users, the executable they get would depend on recent changes, which sounds undesirable. If a <code>-Z</code> flag is provided to override this behavior, I'm not sure how people would find out about it.</p>



<a name="202349134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202349134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202349134">(Jun 29 2020 at 18:20)</a>:</h4>
<p>Yeah, <code>-Z</code> flags should not be where the best option for normal users lie</p>



<a name="202349190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202349190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202349190">(Jun 29 2020 at 18:21)</a>:</h4>
<p>(some projects enable this kind of setup today because they are trying to find a balance between compile times and runtime performance, rust-analyzer is one example, but this is common for game dev too, I believe)</p>



<a name="202839198"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/202839198" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#202839198">(Jul 03 2020 at 22:01)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116107">davidtwco</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/202348484">said</a>:</p>
<blockquote>
<p>(one thought I've just had - might be worth scheduling a meeting/session describing what the incr-comp infrastructure looks like within the compiler today; gets everyone up to speed as the working group starts to do things + you can refer back to it with new folks, or for a refresher)</p>
</blockquote>
<p>I've never replied to this message but I thought I have done so :P, I was talking with <span class="user-mention" data-user-id="116083">@pnkfelix</span> some days ago exactly about this, so huge <span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span></p>



<a name="203664773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203664773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> njn <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203664773">(Jul 12 2020 at 22:47)</a>:</h4>
<p>Making incr. comp. non-deterministic sounds <em>awful</em> to me. It would make all sorts of things harder, such as profiling.</p>



<a name="203668558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203668558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203668558">(Jul 13 2020 at 00:35)</a>:</h4>
<p>uhh, what's this about? I wasn't here when the conversation took place</p>



<a name="203668598"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203668598" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203668598">(Jul 13 2020 at 00:36)</a>:</h4>
<p>is this specifically just about CGU partitioning?</p>



<a name="203668607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203668607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203668607">(Jul 13 2020 at 00:36)</a>:</h4>
<p>at least that part I'm less worried about, compared to the query system</p>



<a name="203670229"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203670229" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> njn <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203670229">(Jul 13 2020 at 01:22)</a>:</h4>
<p>Oh, it says above that "deterministic" means "the edit history should not matter for the final object code files you get out". That's much stronger than what I was thinking of</p>



<a name="203673642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203673642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203673642">(Jul 13 2020 at 02:57)</a>:</h4>
<p>hmm, this shouldn't matter for most of the compiler, right? just codegen and beyond?</p>



<a name="203673717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203673717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203673717">(Jul 13 2020 at 02:59)</a>:</h4>
<p>okay found the start of the non-determinism discussion: <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/201984881">https://rust-lang.zulipchat.com/#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/201984881</a></p>



<a name="203673789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203673789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203673789">(Jul 13 2020 at 03:00)</a>:</h4>
<p>okay yeah seems to be able CGUs, since if they're based on the state of the code when you first compiled the crate, and don't change when you recompile, would not be identical for different edit histories</p>



<a name="203673840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203673840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203673840">(Jul 13 2020 at 03:02)</a>:</h4>
<p>at least it can't (or shouldn't be able to) affect query system behavior in ways in which I care about - even if there are other problems with "edit history sensitive" CGUs</p>



<a name="203736391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203736391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203736391">(Jul 13 2020 at 16:23)</a>:</h4>
<p>Yeah my main focus (when I was talking about using the edit history) was CGUs.</p>



<a name="203736600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203736600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203736600">(Jul 13 2020 at 16:25)</a>:</h4>
<p>now, that may still affect things we care about. When <span class="user-mention" data-user-id="120989">@njn</span> said "profiling" above, I don't know if that was in reference to profile-guided optimization (PGO), or if it was "just" about manual inspection of performance profiles</p>



<a name="203736632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203736632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203736632">(Jul 13 2020 at 16:25)</a>:</h4>
<p>I suspect messing with the CGUs would probably totally screw up PGO</p>



<a name="203780690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203780690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> njn <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203780690">(Jul 13 2020 at 22:45)</a>:</h4>
<p>I mean, if we have two identical scenarios (in terms of what gets compiled, changed, recompiled, etc., after starting from a fresh codebase), I want to have identical (or very nearly identical) behaviour. Which is what we currently have. E.g. look at the <code>incr-patched</code> benchmarks.</p>



<a name="203783434"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203783434" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203783434">(Jul 13 2020 at 23:25)</a>:</h4>
<p><span class="user-mention" data-user-id="120989">@njn</span> if a "scenario" includes the edit history, then my intent was that determinism would be retained. (I was further musing to go a step further, and have some succinct encoding of the historical context that the compiler could emit and read back in, to ease reconstruction of scenarios)</p>



<a name="203783483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203783483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203783483">(Jul 13 2020 at 23:26)</a>:</h4>
<p>that is, the "non-determinism" I was referring to was that the edit history could affect the output, and for some people, that implies unpredictability</p>



<a name="203801841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203801841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203801841">(Jul 14 2020 at 06:15)</a>:</h4>
<p>So you're saying that this non determinism would behave like a seeded RNG:</p>
<ul>
<li>The seed is the change history of the incr-compiled code.</li>
<li>The LLVM IR generated by this process can be described by a certain random distribution (could have really small, greater than zero variance, and still count)</li>
<li>The ONLY thing that determines the IR that gets generated for a certain sample of code, is its change history.<br>
Did I get you right, <span class="user-mention" data-user-id="116083">@pnkfelix</span>?</li>
</ul>



<a name="203801909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203801909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203801909">(Jul 14 2020 at 06:17)</a>:</h4>
<p>The third point implies that if you have two identical histories, the IR generated for both of them would be the same.</p>



<a name="203804111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804111">(Jul 14 2020 at 07:03)</a>:</h4>
<p><span class="user-mention" data-user-id="212698">@Félix Fischer</span> I thought the "change history" is only relevant because of statefulness, not because it exists as an input</p>



<a name="203804122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804122">(Jul 14 2020 at 07:03)</a>:</h4>
<p>Yeah yeah yeah</p>



<a name="203804129"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804129" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804129">(Jul 14 2020 at 07:03)</a>:</h4>
<p>simplest way I can imagine this is some information computed when first compiling incrementally, that is preserved instead of updated</p>



<a name="203804137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804137">(Jul 14 2020 at 07:03)</a>:</h4>
<p>I'm modeling it as an equivalent problem</p>



<a name="203804147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804147">(Jul 14 2020 at 07:03)</a>:</h4>
<p>so instead of being deterministic on the current source code, it's deterministic on the source code at some point in the past</p>



<a name="203804208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804208">(Jul 14 2020 at 07:04)</a>:</h4>
<p>I don't think you need to get into randomness, it's deterministic just not on the current state</p>



<a name="203804210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804210">(Jul 14 2020 at 07:04)</a>:</h4>
<p>Yes</p>



<a name="203804214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804214">(Jul 14 2020 at 07:04)</a>:</h4>
<p>It is deterministic</p>



<a name="203804219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804219">(Jul 14 2020 at 07:04)</a>:</h4>
<p>I'd call it "stateful" not even nondeterministic tbh</p>



<a name="203804221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804221">(Jul 14 2020 at 07:04)</a>:</h4>
<p>But it might appear random</p>



<a name="203804247"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804247" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804247">(Jul 14 2020 at 07:05)</a>:</h4>
<p>no, I don't think that's fair to say</p>



<a name="203804264"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804264" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804264">(Jul 14 2020 at 07:05)</a>:</h4>
<p>I think I need a voice message to explain what I mean XD</p>



<a name="203804330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804330">(Jul 14 2020 at 07:06)</a>:</h4>
<p>because of how different the past codebase could look compared to the current one, I don't think you can even model it probabilistically</p>



<a name="203804332"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804332" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804332">(Jul 14 2020 at 07:06)</a>:</h4>
<p>I mean that it is like a noise function. You give it a seed and a point in space, and it always computes to the same value</p>



<a name="203804345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804345">(Jul 14 2020 at 07:06)</a>:</h4>
<p>(Procedural noise)</p>



<a name="203804360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804360">(Jul 14 2020 at 07:06)</a>:</h4>
<p>that's just a deterministic function</p>



<a name="203804363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804363">(Jul 14 2020 at 07:06)</a>:</h4>
<p>And it is continuous in the point</p>



<a name="203804366"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804366" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804366">(Jul 14 2020 at 07:06)</a>:</h4>
<p>Yup</p>



<a name="203804378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804378">(Jul 14 2020 at 07:06)</a>:</h4>
<p>Deterministic indeed. Well, that's what I'm asking</p>



<a name="203804386"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804386" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804386">(Jul 14 2020 at 07:07)</a>:</h4>
<p>I don't see how the "PRNG" aspect applies to the rustc situation</p>



<a name="203804424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804424">(Jul 14 2020 at 07:08)</a>:</h4>
<p>it's either deterministic in one or more of the states the source code was when running <code>rustc</code>, or it's not</p>



<a name="203804463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804463">(Jul 14 2020 at 07:08)</a>:</h4>
<p>if it depends on anything but the current state, it's stateful</p>



<a name="203804466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804466">(Jul 14 2020 at 07:08)</a>:</h4>
<p>Why not? (Btw we might be digressing too much here, and I think we are actually saying the same thing but I might not be good enough at writing my idea down to show it, I think?</p>



<a name="203804512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804512">(Jul 14 2020 at 07:09)</a>:</h4>
<p>Nono, you got me wrong. Procedural noise is always deterministic. It only appears random.</p>



<a name="203804523"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804523" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804523">(Jul 14 2020 at 07:09)</a>:</h4>
<p>what rustc does doesn't even appear random, it's just boring algorithms</p>



<a name="203804539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804539">(Jul 14 2020 at 07:09)</a>:</h4>
<p>you can <em>add</em> PRNGs to some of the algorithms but that's specifically an extra step</p>



<a name="203804558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804558">(Jul 14 2020 at 07:09)</a>:</h4>
<p>But prngs are something else eddy!</p>



<a name="203804606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804606">(Jul 14 2020 at 07:10)</a>:</h4>
<p>Anywho</p>



<a name="203804616"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804616" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804616">(Jul 14 2020 at 07:10)</a>:</h4>
<p>the closest thing is probably LLVM optimizations, in terms of unpredictable behavior</p>



<a name="203804627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804627">(Jul 14 2020 at 07:10)</a>:</h4>
<p>what rustc does is <em>very boring</em> compared to anything random-looking, noise etc.</p>



<a name="203804634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804634">(Jul 14 2020 at 07:10)</a>:</h4>
<p>Yes</p>



<a name="203804661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804661">(Jul 14 2020 at 07:11)</a>:</h4>
<p>and we could (deterministically) randomize some things, and that's a specific choice, which is why I disagree on using that terminology when we <em>don't</em> do that</p>



<a name="203804668"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804668" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804668">(Jul 14 2020 at 07:11)</a>:</h4>
<p>But my question was about this discussion we were having on making the incr. compilation artifacts be "non-deterministic"</p>



<a name="203804671"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804671" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804671">(Jul 14 2020 at 07:11)</a>:</h4>
<p>So, things that haven't been implemented yet</p>



<a name="203804685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804685">(Jul 14 2020 at 07:11)</a>:</h4>
<p>I think even "non-deterministic" might've been a misuse of the term</p>



<a name="203804759"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804759" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804759">(Jul 14 2020 at 07:12)</a>:</h4>
<p>And I wanted to ask Felix (the other Felix XD) if what he meant was actually "deterministic, but basically dependent on the entire incr. compilation history of the code"</p>



<a name="203804771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804771">(Jul 14 2020 at 07:12)</a>:</h4>
<p>statefully deterministic and only apparently non-deterministic (when taking into account only the current state)</p>



<a name="203804783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804783">(Jul 14 2020 at 07:13)</a>:</h4>
<p>Yup</p>



<a name="203804788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804788">(Jul 14 2020 at 07:13)</a>:</h4>
<p>Exactly</p>



<a name="203804813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804813">(Jul 14 2020 at 07:13)</a>:</h4>
<p>okay sure but bringing anything like "randomness" into it muddles the waters, because <span class="user-mention" data-user-id="116083">@pnkfelix</span> may have been talking about actually randomizing (deterministically, or not) some initial state of the incremental caches</p>



<a name="203804818"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804818" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804818">(Jul 14 2020 at 07:13)</a>:</h4>
<p>I think that "non-deterministic" here means that the artifacts produced might depend on history and not just code alone</p>



<a name="203804860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804860">(Jul 14 2020 at 07:14)</a>:</h4>
<p>sorry, I should go to sleep instead of stumbling over things to be pedantic about</p>



<a name="203804876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804876">(Jul 14 2020 at 07:14)</a>:</h4>
<p>yeah I think that's a slightly misuse like I mentioned above</p>



<a name="203804883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804883">(Jul 14 2020 at 07:14)</a>:</h4>
<p>Yeah yeah</p>



<a name="203804885"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804885" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804885">(Jul 14 2020 at 07:14)</a>:</h4>
<p>Don't worry eddy</p>



<a name="203804888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804888">(Jul 14 2020 at 07:14)</a>:</h4>
<p>Be pedantic alright</p>



<a name="203804921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203804921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203804921">(Jul 14 2020 at 07:15)</a>:</h4>
<p>Please do ask me for clarification if something seems off in my writing</p>



<a name="203805048"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203805048" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203805048">(Jul 14 2020 at 07:17)</a>:</h4>
<p>I sometimes use terms that might be ambiguous because I usually bring different areas of CS to the table, to understand the compiler better myself</p>



<a name="203805107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203805107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203805107">(Jul 14 2020 at 07:18)</a>:</h4>
<p>But those terms in this context might not carry the same meaning</p>



<a name="203805109"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203805109" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203805109">(Jul 14 2020 at 07:18)</a>:</h4>
<p><span aria-label="heart" class="emoji emoji-2764" role="img" title="heart">:heart:</span>️</p>



<a name="203848500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203848500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203848500">(Jul 14 2020 at 15:36)</a>:</h4>
<p>im happy to switch terminology</p>



<a name="203848653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203848653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203848653">(Jul 14 2020 at 15:38)</a>:</h4>
<p>all I've been trying to say is that we might want to allow the results to be a function of the history rather than the end state. I said "non-deterministic" because, unfortunately, that's how such results can look to some people who assume that history is <em>not</em> an input to the function.</p>



<a name="203849552"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203849552" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203849552">(Jul 14 2020 at 15:44)</a>:</h4>
<p>Oh, okay, I think we got what you meant then :3</p>



<a name="203849587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203849587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203849587">(Jul 14 2020 at 15:45)</a>:</h4>
<p>I was worried I had misunderstood</p>



<a name="203849763"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203849763" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203849763">(Jul 14 2020 at 15:46)</a>:</h4>
<p>So then: is this a problem? That the results are history-dependent for the incr-comp case?</p>



<a name="203849825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203849825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203849825">(Jul 14 2020 at 15:47)</a>:</h4>
<p>well, as I noted above, its contrary to one of the original design goals for incr-comp</p>



<a name="203849999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203849999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203849999">(Jul 14 2020 at 15:48)</a>:</h4>
<p>that is, at one point one of the tests in use was to rebuild a repo at each point in its history, and check that the results are the same as a clean build (i.e. one with no incr-comp results stored)</p>



<a name="203850056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850056">(Jul 14 2020 at 15:48)</a>:</h4>
<p>Ahhh, I see</p>



<a name="203850066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850066">(Jul 14 2020 at 15:48)</a>:</h4>
<p>(because I interpret the latter as being the same as "having no history at all")</p>



<a name="203850096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850096">(Jul 14 2020 at 15:49)</a>:</h4>
<p>Right, right</p>



<a name="203850121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850121">(Jul 14 2020 at 15:49)</a>:</h4>
<p>Can we get rid of that restriction?</p>



<a name="203850142"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850142" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850142">(Jul 14 2020 at 15:49)</a>:</h4>
<p>that is indeed the question. :)</p>



<a name="203850160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850160">(Jul 14 2020 at 15:49)</a>:</h4>
<p>Hahaha</p>



<a name="203850170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850170">(Jul 14 2020 at 15:49)</a>:</h4>
<p>:)</p>



<a name="203850171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850171">(Jul 14 2020 at 15:49)</a>:</h4>
<p>its probably something we'd have to raise with the whole compiler team, at least</p>



<a name="203850181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850181">(Jul 14 2020 at 15:49)</a>:</h4>
<p>if not core as well</p>



<a name="203850185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850185">(Jul 14 2020 at 15:49)</a>:</h4>
<p>Agreed</p>



<a name="203850269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850269">(Jul 14 2020 at 15:50)</a>:</h4>
<p>And I don't want to do that until we've got evidence that doing this is a significant win</p>



<a name="203850309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850309">(Jul 14 2020 at 15:50)</a>:</h4>
<p>Ahh, okay</p>



<a name="203850320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850320">(Jul 14 2020 at 15:50)</a>:</h4>
<p>Niko pointedly said that they thought there are other tasks we could tackle, like querifying more stuff</p>



<a name="203850382"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850382" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850382">(Jul 14 2020 at 15:51)</a>:</h4>
<p>Querifying more stuff?</p>



<a name="203850395"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850395" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850395">(Jul 14 2020 at 15:51)</a>:</h4>
<p>Like, in chalk?</p>



<a name="203850407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850407">(Jul 14 2020 at 15:51)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/203850269">said</a>:</p>
<blockquote>
<p>And I don't want to do that until we've got evidence that doing this is a significant win</p>
</blockquote>
<p>at the same time, I don't want to invest the effort of prototyping history-sensitive compilation unless we have some idea that it <em>might</em> be okayed.</p>



<a name="203850439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850439">(Jul 14 2020 at 15:51)</a>:</h4>
<p>Right, right. I was wondering about that^</p>



<a name="203850462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850462">(Jul 14 2020 at 15:52)</a>:</h4>
<p><span class="user-mention silent" data-user-id="212698">Félix Fischer</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/203850395">said</a>:</p>
<blockquote>
<p>Like, in chalk?</p>
</blockquote>
<p>um more like in the query system that the compiler actually uses today?</p>



<a name="203850511"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850511" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850511">(Jul 14 2020 at 15:52)</a>:</h4>
<p><span class="user-mention silent" data-user-id="212698">Félix Fischer</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/203850382">said</a>:</p>
<blockquote>
<p>Querifying more stuff?</p>
</blockquote>
<p><a href="https://rustc-dev-guide.rust-lang.org/query.html">https://rustc-dev-guide.rust-lang.org/query.html</a></p>



<a name="203850517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850517">(Jul 14 2020 at 15:52)</a>:</h4>
<p>let me see if I can find an issue explaining this</p>



<a name="203850563"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850563" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850563">(Jul 14 2020 at 15:52)</a>:</h4>
<p>Ahhhhhhhhhhhhhhhh</p>



<a name="203850600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850600">(Jul 14 2020 at 15:52)</a>:</h4>
<p>AIUI only the middle and backend parts of the compiler use the query system which is what powers incremental compilation. The parser, name resolution, and other frontend stuff is still pass based and doesn't participate in incremental compilation.</p>



<a name="203850604"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850604" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850604">(Jul 14 2020 at 15:52)</a>:</h4>
<p>see for example: <a href="https://rust-lang.github.io/compiler-team/minutes/design-meeting/2019-12-06-end-to-end-query-PRs/">https://rust-lang.github.io/compiler-team/minutes/design-meeting/2019-12-06-end-to-end-query-PRs/</a></p>



<a name="203850641"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850641" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850641">(Jul 14 2020 at 15:53)</a>:</h4>
<p>Demand driven <em>compilation</em>. I had completely forgotten that that was one of the current overall goals</p>



<a name="203850770"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850770" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850770">(Jul 14 2020 at 15:54)</a>:</h4>
<p>I was only thinking in queries as "rust-analyzer kind of things"</p>



<a name="203850876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850876">(Jul 14 2020 at 15:55)</a>:</h4>
<p>So how do we get from a world where we do incremental pass-based compilation to a world where, at least for debug builds, we do it... query-based?</p>



<a name="203850900"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850900" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850900">(Jul 14 2020 at 15:55)</a>:</h4>
<p>We're already query based, just not the first part of the compilation process</p>



<a name="203850904"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850904" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850904">(Jul 14 2020 at 15:55)</a>:</h4>
<p>no no, read <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> 's message again</p>



<a name="203850915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850915">(Jul 14 2020 at 15:55)</a>:</h4>
<p>So the goal is to make that part query based as well</p>



<a name="203850917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203850917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203850917">(Jul 14 2020 at 15:55)</a>:</h4>
<p>the pass-based stuff is inherently non-increental</p>



<a name="203851032"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851032" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851032">(Jul 14 2020 at 15:56)</a>:</h4>
<p>but yes, we probably do want to move from pass-based to query-based for more stuff</p>



<a name="203851054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851054">(Jul 14 2020 at 15:56)</a>:</h4>
<p>that is what the end-to-end query stuff is about. (Making the earlier phases use queries)</p>



<a name="203851070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851070">(Jul 14 2020 at 15:56)</a>:</h4>
<p>Ah, okay. So we are already in a query-based world. This is cool :D</p>



<a name="203851233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851233">(Jul 14 2020 at 15:58)</a>:</h4>
<p>Ah, okay, I see. So niko was saying that we could still get some low-hanging fruit by querifying more parts of the compiling process.</p>



<a name="203851250"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851250" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851250">(Jul 14 2020 at 15:58)</a>:</h4>
<p>exactly</p>



<a name="203851256"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851256" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851256">(Jul 14 2020 at 15:58)</a>:</h4>
<p>I don't know how low-hanging it is</p>



<a name="203851276"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851276" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851276">(Jul 14 2020 at 15:58)</a>:</h4>
<p>but it would have a less drastic effect, perhaps, on our customers</p>



<a name="203851277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851277">(Jul 14 2020 at 15:58)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/203851256">said</a>:</p>
<blockquote>
<p>I don't know how low-hanging it is</p>
</blockquote>
<p>I was typing exactly this <span aria-label="laughter tears" class="emoji emoji-1f602" role="img" title="laughter tears">:laughter_tears:</span></p>



<a name="203851324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851324">(Jul 14 2020 at 15:59)</a>:</h4>
<p>There's other possible improvements here as well. Some of our queries are very "coarse-grained" so we do more work than strictly necessary or because they cover so much code, they invalidate more of the data then needs to be when something changes. Breaking those kinds of queries up to be smaller would result in less work. </p>
<p>There's also the reverse where if we have queries that are too small, the overhead of recording their results into the query system dwarfs the improvements we get from running them incrementally.</p>



<a name="203851342"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851342" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851342">(Jul 14 2020 at 15:59)</a>:</h4>
<p>Basically just fine-tuning what we already have.</p>



<a name="203851406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851406">(Jul 14 2020 at 15:59)</a>:</h4>
<p>Right, right, right</p>



<a name="203851638"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851638" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851638">(Jul 14 2020 at 16:01)</a>:</h4>
<p>I wonder how we can set up a benchmark for this. Something that feeds compilation histories to the compiler so that we can see how the tuning efforts affect performance</p>



<a name="203851760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851760">(Jul 14 2020 at 16:02)</a>:</h4>
<p>even a short history might be useful</p>



<a name="203851801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851801">(Jul 14 2020 at 16:03)</a>:</h4>
<p><span class="user-mention silent" data-user-id="212698">Félix Fischer</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/203851638">said</a>:</p>
<blockquote>
<p>I wonder how we can set up a benchmark for this. Something that feeds compilation histories to the compiler so that we can see how the tuning efforts affect performance</p>
</blockquote>
<p><a href="http://perf.rust-lang.org">perf.rust-lang.org</a> does that some of that already, which you might not be aware of - there is a baseline run, a full incremental run and a patched incremental run - we may of course want something more or less depending on what the working group ends up focusing on</p>



<a name="203851817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851817">(Jul 14 2020 at 16:03)</a>:</h4>
<p>like, our current perf.rlo benchmarks only use single patches at most for evaluating incrental, if I remember correctly</p>



<a name="203851867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851867">(Jul 14 2020 at 16:03)</a>:</h4>
<p>while I would expect we would probably want histories with a stack of at least two patches</p>



<a name="203851884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851884">(Jul 14 2020 at 16:03)</a>:</h4>
<p>Yup, as I understand it, that is the case</p>



<a name="203851907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851907">(Jul 14 2020 at 16:03)</a>:</h4>
<p>(since the content of the first patch will likely inform the compilation of the second patch)</p>



<a name="203851969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203851969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203851969">(Jul 14 2020 at 16:04)</a>:</h4>
<p>Yas. Two patches would let us explore how two changes interact</p>



<a name="203852066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852066">(Jul 14 2020 at 16:05)</a>:</h4>
<p>adding a two-patch stack to perf.rlo probably would not be that hard. But I wouldn't want to start adding that overhead to perf until we have <em>something</em> in place that tries to use it</p>



<a name="203852084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852084">(Jul 14 2020 at 16:05)</a>:</h4>
<p>(Thank u <span class="user-mention" data-user-id="116107">@davidtwco</span>, I already sorta know that bench, although I feel like I could know a lot more still ^^)</p>



<a name="203852220"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852220" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852220">(Jul 14 2020 at 16:06)</a>:</h4>
<p>We get a lot of PRs that need to run perf before merging so adding tests to that unnecessarily hurts PR throughput. If we need the tests to catch perf regressions or make sure things stay fast, that's fine but we shouldn't add overhead there unnecessarily.</p>



<a name="203852251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852251">(Jul 14 2020 at 16:06)</a>:</h4>
<p>Agreed</p>



<a name="203852259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852259">(Jul 14 2020 at 16:06)</a>:</h4>
<p>having said that, we might consider making a branch of perf</p>



<a name="203852266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852266">(Jul 14 2020 at 16:06)</a>:</h4>
<p>that we use locally to evaluate a prototype</p>



<a name="203852280"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852280" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852280">(Jul 14 2020 at 16:07)</a>:</h4>
<p>so that we have a shared understanding of what we are benchmarking.</p>



<a name="203852324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852324">(Jul 14 2020 at 16:07)</a>:</h4>
<p>You can run perf locally, it's not necessarily the most streamlined experience but it does work fairly well once you have it set up.</p>



<a name="203852477"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852477" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852477">(Jul 14 2020 at 16:08)</a>:</h4>
<p>I take from the current discussion that we're primarily interested in the performance implications of incr-comp; things such as making incr-comp bugs easier to reproduce and debug are somewhat secondary to the extent that addressing them isn't necessary for the primary goal of perf?</p>



<a name="203852502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852502">(Jul 14 2020 at 16:08)</a>:</h4>
<p><span class="user-mention" data-user-id="116107">@davidtwco</span> that's an excellent point</p>



<a name="203852525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852525">(Jul 14 2020 at 16:09)</a>:</h4>
<p>Re: PR throughput<br>
I want to work on that infrastructure. I feel like there are some low hanging fruits (wrt throughput and other metrics) in perf.rlo, but I won't have time for that at least until November so don't mind me &gt;.&lt;</p>



<a name="203852526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852526">(Jul 14 2020 at 16:09)</a>:</h4>
<p>I think making incr-comp bugs easier to reproduce and debug is something we should talk about</p>



<a name="203852547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852547">(Jul 14 2020 at 16:09)</a>:</h4>
<p>That's the boring stuff so that's probably why it hasn't been talked about <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="203852554"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852554" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852554">(Jul 14 2020 at 16:09)</a>:</h4>
<p>But yeah, that stuff is really important</p>



<a name="203852576"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852576" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852576">(Jul 14 2020 at 16:09)</a>:</h4>
<p>We have a pretty large backlog of incr bugs</p>



<a name="203852583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852583">(Jul 14 2020 at 16:09)</a>:</h4>
<p>Having not thought too deeply about potential solutions, it seems hard.</p>



<a name="203852586"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852586" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852586">(Jul 14 2020 at 16:09)</a>:</h4>
<p>but I suspect any such work (on making incr-comp easier to repro+debug) is only going to be justified if its in service of making incr comp faster.</p>



<a name="203852614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852614">(Jul 14 2020 at 16:09)</a>:</h4>
<p>Hmm</p>



<a name="203852745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852745">(Jul 14 2020 at 16:10)</a>:</h4>
<p>I would pose it a bit differently</p>



<a name="203852757"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852757" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852757">(Jul 14 2020 at 16:10)</a>:</h4>
<p>is the incr cache something that can be moved between host systems? I would expect it isn't, but if it is, or if it can be made portable, then maybe that's a way we could help make the bugs easier to repro</p>



<a name="203852794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852794">(Jul 14 2020 at 16:11)</a>:</h4>
<p>Something that hadn't clicked for me until just now but most of the bugs I've seen are only reported because they ICE the compiler. People generally aren't complaining because incr-comp doesn't work as well as it should, they're complaining because it completely breaks rustc.</p>



<a name="203852801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852801">(Jul 14 2020 at 16:11)</a>:</h4>
<p>at least in terms of having the compiler provide an easy way to archive (e.g. in a tar ball) the current incr cache, perhaps in response to an ICE</p>



<a name="203852827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852827">(Jul 14 2020 at 16:11)</a>:</h4>
<p>Yas!</p>



<a name="203852851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852851">(Jul 14 2020 at 16:11)</a>:</h4>
<p>That would be really nice</p>



<a name="203852863"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852863" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852863">(Jul 14 2020 at 16:11)</a>:</h4>
<p>So fixing the root cause that causes us to use bad incr-comp data would likely resolve a lot of the current complaints and issues and then we can focus on making it faster/better/smarter.</p>



<a name="203852913"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852913" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852913">(Jul 14 2020 at 16:12)</a>:</h4>
<p>Yup</p>



<a name="203852923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852923">(Jul 14 2020 at 16:12)</a>:</h4>
<p>I would pose it that way</p>



<a name="203852933"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203852933" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203852933">(Jul 14 2020 at 16:12)</a>:</h4>
<p>Presumably we'd need some tooling to understand the contents of the incr-comp cache - I can't imagine how I'd determine right now whether the bug in a incr-comp ICE is what the compiler spat out last time, or what it is doing this time with that data.</p>



<a name="203853018"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853018" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853018">(Jul 14 2020 at 16:13)</a>:</h4>
<p>Incr-comp needs to be valid always. Then, it can be as fast as possible. Like, speed is the target; not ICE-ing is a restriction of the problem :3</p>



<a name="203853023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853023">(Jul 14 2020 at 16:13)</a>:</h4>
<p>its true: trying to make the incr-cache portable could be a real rabbit hole</p>



<a name="203853128"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853128" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853128">(Jul 14 2020 at 16:14)</a>:</h4>
<p>another potential option would be to actually record the history, as interpreted by the incr-cache, <em>in</em> the incr-cache</p>



<a name="203853143"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853143" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853143">(Jul 14 2020 at 16:14)</a>:</h4>
<p>and then when you have a bug, you could serialize <em>just</em> the edit history</p>



<a name="203853147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853147">(Jul 14 2020 at 16:14)</a>:</h4>
<p>Yas</p>



<a name="203853148"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853148" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853148">(Jul 14 2020 at 16:14)</a>:</h4>
<p>and add that to the bug report</p>



<a name="203853177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853177">(Jul 14 2020 at 16:14)</a>:</h4>
<p>Storing just the edit history should be fairly cheap in space</p>



<a name="203853209"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853209" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853209">(Jul 14 2020 at 16:15)</a>:</h4>
<p>(Unless you do a sweeping change I guess)</p>



<a name="203853224"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853224" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853224">(Jul 14 2020 at 16:15)</a>:</h4>
<p>I wonder if there's some kind of diagnostic routine we could write that would validate the incr-comp cache and report issues with it. We could invoke that as part of the ICE routine if the backtrace has some of the telltale incr-comp frames in it.</p>



<a name="203853245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853245">(Jul 14 2020 at 16:15)</a>:</h4>
<p>I think that would be best - then you can run the compiler with logging in the intermediate compiler invocations too. But not everyone will be able to share their source - though that's not specific to incr-comp bugs.</p>



<a name="203853255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853255">(Jul 14 2020 at 16:15)</a>:</h4>
<p>Or the classic "tried to get index 12371239589231032 when slice len was 4"</p>



<a name="203853321"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853321" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853321">(Jul 14 2020 at 16:16)</a>:</h4>
<p>Which is 99% of the time an incr-comp issue</p>



<a name="203853350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853350">(Jul 14 2020 at 16:16)</a>:</h4>
<p>Woah, that bad?</p>



<a name="203853378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853378">(Jul 14 2020 at 16:16)</a>:</h4>
<p>I mean we don't see that kind of bug very often at all, apart from incr comp issues</p>



<a name="203853384"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853384" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853384">(Jul 14 2020 at 16:16)</a>:</h4>
<p>Well, it's just not a bug we normally generate anywhere else in the compiler.</p>



<a name="203853421"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853421" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853421">(Jul 14 2020 at 16:17)</a>:</h4>
<p>I see. Wow.</p>



<a name="203853430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853430">(Jul 14 2020 at 16:17)</a>:</h4>
<p>I wonder if we could change the message associated with that panic</p>



<a name="203853437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853437">(Jul 14 2020 at 16:17)</a>:</h4>
<p>when it happens in rustc</p>



<a name="203853443"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853443" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853443">(Jul 14 2020 at 16:17)</a>:</h4>
<p>to say "this might be an incr-comp issue"</p>



<a name="203853459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853459">(Jul 14 2020 at 16:17)</a>:</h4>
<p>That seems plausibly possible to me</p>



<a name="203853461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853461">(Jul 14 2020 at 16:17)</a>:</h4>
<p>"Go &lt;here&gt; to report the problem"</p>



<a name="203853462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853462">(Jul 14 2020 at 16:17)</a>:</h4>
<p>because part of the problem there is that the end-user doesn't even necessarily know that's a likely culprit</p>



<a name="203853486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853486">(Jul 14 2020 at 16:17)</a>:</h4>
<p>Yas</p>



<a name="203853491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853491">(Jul 14 2020 at 16:18)</a>:</h4>
<p>That should help a lot</p>



<a name="203853535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853535">(Jul 14 2020 at 16:18)</a>:</h4>
<p>Yeah and by the time someone on the triage team realizes what's going on, they've blown away their cache</p>



<a name="203853558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853558">(Jul 14 2020 at 16:18)</a>:</h4>
<p>Oh noes</p>



<a name="203853566"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853566" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853566">(Jul 14 2020 at 16:18)</a>:</h4>
<p>That's totally true</p>



<a name="203853573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853573">(Jul 14 2020 at 16:18)</a>:</h4>
<p><span aria-label="joy" class="emoji emoji-1f602" role="img" title="joy">:joy:</span></p>



<a name="203853686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853686">(Jul 14 2020 at 16:19)</a>:</h4>
<p>Personally I would like to know if the issue is that the cache is wrong/corrupted or if we're triggering some kind of rare bug within the query system with valid data.</p>



<a name="203853708"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853708" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853708">(Jul 14 2020 at 16:19)</a>:</h4>
<p>really maybe every ICE should archive the incr cache</p>



<a name="203853745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853745">(Jul 14 2020 at 16:19)</a>:</h4>
<p>In fact I think I even had such an issue while doing incremental work on mir-opt. It was so obscure that I ended up blowing up the entire cache and that fixed it</p>



<a name="203853853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853853">(Jul 14 2020 at 16:19)</a>:</h4>
<p>Like maybe the data on disk is fine but we forget to update some index or something when we load it into the current compilation session and then later it goes off the rails</p>



<a name="203853859"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853859" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853859">(Jul 14 2020 at 16:19)</a>:</h4>
<p>(though <em>that</em> may lead to serious space blowup, given how much space the current incr cache uses already ...)</p>



<a name="203853932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853932">(Jul 14 2020 at 16:20)</a>:</h4>
<p>Maybe it can be compressed!</p>



<a name="203853964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853964">(Jul 14 2020 at 16:20)</a>:</h4>
<p>Could earlier parts of the compiler not being querified result in different internal state (e.g. one more variant in an <code>AdtDef</code>) so that at the point where we start checking incr-comp data it causes the out-of-range indexing? I don't know enough about how we implement things to whether that could be the case.</p>



<a name="203853968"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853968" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853968">(Jul 14 2020 at 16:20)</a>:</h4>
<p>We probably don't need the MIR or llvm bitcode for the results.</p>



<a name="203853988"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853988" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853988">(Jul 14 2020 at 16:21)</a>:</h4>
<p>Which, I think are a fairly significant part of the disk cost.</p>



<a name="203853991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203853991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203853991">(Jul 14 2020 at 16:21)</a>:</h4>
<p>If it is a cache, it must be in a fairly easy-to-digest form. I bet you can get a 50% reduction in size if not more with a common compression tool</p>



<a name="203854201"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203854201" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203854201">(Jul 14 2020 at 16:23)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116107">davidtwco</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints/near/203853964">said</a>:</p>
<blockquote>
<p>Could earlier parts of the compiler not being querified result in different internal state (e.g. one more variant in an <code>AdtDef</code>) so that at the point where we start checking incr-comp data it causes the out-of-range indexing? I don't know enough about how we implement things to whether that could be the case.</p>
</blockquote>
<p>One would hope that the relevant portions of the incr-cache are invalidated in such scenarios, but that may indeed be part of the bugs in these cases (i..e situations where we are failing to invalidate sufficiently)</p>



<a name="203854334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203854334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203854334">(Jul 14 2020 at 16:24)</a>:</h4>
<p>I recall that there is some care taken to when choosing <code>DepNodeId</code>s (I think that's the right type) so that it doesn't change unnecessarily between compilations because those are the underlying keys into the incr cache (IIRC).</p>
<p>Edit: This is what I was thinking of <a href="https://github.com/rust-lang/rust/blob/master/src/librustc_middle/dep_graph/dep_node.rs">https://github.com/rust-lang/rust/blob/master/src/librustc_middle/dep_graph/dep_node.rs</a></p>



<a name="203854340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203854340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203854340">(Jul 14 2020 at 16:24)</a>:</h4>
<p>"Naming and Cache invalidation are the two hardest problems in CS" xD</p>



<a name="203854360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203854360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203854360">(Jul 14 2020 at 16:24)</a>:</h4>
<p>Leaving that mostly just to try to point people toward the right thing.</p>



<a name="203855573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming%3A%20mission%20statement%2C%20goals%2C%20design%20constraints/near/203855573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Félix Fischer <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/brainstorming.3A.20mission.20statement.2C.20goals.2C.20design.20constraints.html#203855573">(Jul 14 2020 at 16:35)</a>:</h4>
<p>(Fuck, Zulip mobile client is hard to use XD)</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>